#ifndef TRUNK_INCLUDE_USBDEVICE_H_
#define TRUNK_INCLUDE_USBDEVICE_H_



#include <map>
#include <string>
#include <functional>
#include "json.h"

namespace Usbstream{

using namespace std;


using callback_t = function<bool(void *buffer, int length)>;

class UsbDevice{
public:
	/**
	 * 对象信息获取，这里都是使用MAP的方式封装的，可用直接返回
	 * */
	virtual bool getSupportParams(Json::Value &params);

	/**
	 * 设置对象的信息，也是使用map的方式设置对象的信息可用统一写
	 * */
	virtual bool setParams(const Json::Value params);

	/**
	 * 如果是输入支持开启流关闭流，设置回调等操作，如果是输出提供一个write接口
	 * */
	virtual bool startStream(callback_t cb);

	virtual bool stopStream();


	virtual bool writeStream(void *buffer, int length);

	UsbDevice(){};
	virtual ~UsbDevice(){};
};

}
#endif
